[技術分享]NonStop Server SSH架構與操作(上)

作者/馬先讓

作者簡歷 作者擁有26年IT服務資歷,現職凌群電腦NSK服務總處副總工程師,主要負責HPE Nonstop 證券、期貨、銀行客戶交易系統維運服務,專長為HPE NonStop系統整合。 前言 HPE NonStop SSH是一個綜合性Enterprise Secure Shell解決方案。SSH (Secure Shell)是一套網路連線協定,本期將介紹HPE NonStop SSH架構/安裝設定。 一、SSH產品介紹 SSH2支援Secure Shell協定Version 2,SSH2軟體包含了以下的檔案元件:
  • SSH2:SSH2是最主要執行的檔案,根據它在啟動的模式,它可以服務不同的目的:
    • 它如果當成Server process,它會聽特定的連線TCP/IP Port(通常為PORT 22),對使用者和服務進行身份驗證,然後建立連線。
    • 它使用SSHCOM管理SSH configuration database。
    • 使用者可以用SFTP或SSH client軟體與有啟動SSH daemon的系統做連線。
  • SSHOSS:它是一個執行在OSS環境下的Secure Shell client,與遠端SSH daemon連線。
  • SSH:它是一個執行在Guardian環境下的Secure Shell client,與遠端SSH daemon連線。
  • SFTPSERV:它透過SSH2啟動,每個連接到SSH2的SFTP client,SFPTSERV就會啟動,SFTPSERV處理SFTP client端要做的檔案傳送,SSH2的設定需設定是否允許SFTP功能。
  • SFTPOSS:執行在OSS環境的SFTP client。
  • SFTP:執行在Guardian環境的SFTP client。
  • SSHCOM:用來管理SSH環境
  • PAUTH:對系統使用者群的使用者密碼進行身份驗證。
  • STN:是一個pseudo TTY server,提供全螢幕shell給遠端SSH clients使用。
  • SCPOSS:當作一個SCP SERVER,由遠端SCP client執行shell指令啟動,系統目前未提供SCP client程式。
二、SSH架構概述
  • SSH2執行成SSH Daemon (Server) 下圖為SSH2執行成SSH Daemon (Server)時,SSH2的元件如何運作;SSH processes提供了shell、file transfer、port forwarding access到遠端的SSH Clients,如同開源軟體的OpenSSH。

    《圖一》
    說明: SSH2元件接受遠端連線,根據使用者的資料庫對遠端使用者進行身份驗證,也可以使用PAUTH驗證使用者密碼。在收到請求後,可使用以下的服務:
    • 能獲得OSS Shell或TACL或SFTPSERV。
    • 連到一個PTY(pseudo terminal),由STN啟動的PTY server。
    • 轉發TCP/IP或FTP連線到local server process。
    使用者可以使用SSHCOM管理user database,允許管理者配置remote users public keys和控制對伺服器的功能和檔案傳輸的檔案系統的存取權限。
  • SSH2執行成SSH Client 下圖為SSH2 執行成SSH Daemon Client時,SSH2的元件如何運作。

    《圖二》
    說明: SSH2當作SSH、SFTP或OSS環境的SSHOSS、SFTPOSS client 的介面,client元件透過SSH2傳送使用者指令到遠端的SSH daemon。SSH2元件透過TCP/IP連接到遠端系統建立SSH連線,client元件和SSH2元件透過$RECEIVE交換訊息,直到client端被使用者終止。 此外,client也可建立port forwarding轉發TCPIP或FTP連線從local socket程式到遠端SSH Server。SSHCOM用於維護包含本地系統使用者的金鑰組,遠端密碼和遠端SSH主機公共金鑰。
三、快速啟動SSH2 此章節說明如何快速啟動SSH2環境並建立連線。
  • START the STN Pseudo Terminal Server 若要讓遠端SSH clients得到一個全螢幕連線,必須啟動一個STN process 當作SSH2的PTY server,若不需要則不用啟動,在TACL環境下執行下面obeyfile: ALLOW ALL ERRORS ABORT PROCESS $ZZKRN.#SSH-PTYB DELETE PROCESS $ZZKRN.#SSH-PTYB ADD PROCESS $ZZKRN.#SSH-PTYB, & NAME $PTYB, PROGRAM $SYSTEM.ZSSH.STN, DEFAULTVOL $SYSTEM.SSHTEST, & HOMETERM $ZHOME, INFILE $ZHOME, OUTFILE $ZHOME, & AUTORESTART 10, SAVEABEND OFF, STARTMODE APPLICATION, PRIORITY 150, & STOPMODE STANDARD, CPU FIRSTOF (1,0) START PROCESS $ZZKRN.#SSH-PTYB 說明: ‧STN Process Name等同以前的TELSERV Process Name。 ‧指定STN DEFAULTVOL目錄。
  • To Start the SSH2 Component 在TACL環境下執行下面Obeyfile: ALLOW ALL ERRORS ABORT PROCESS $ZZKRN.#SSH-ZSSHB DELETE PROCESS $ZZKRN.#SSH-ZSSHB ADD PROCESS $ZZKRN.#SSH-ZSSHB, & NAME $ZSSHB, PROGRAM $SYSTEM.ZSSH.SSH2, DEFAULTVOL $SYSTEM.SSHTEST, & HOMETERM $ZHOME, INFILE $ZHOME, OUTFILE $ZHOME, & AUTORESTART 10, SAVEABEND OFF, STARTMODE APPLICATION, PRIORITY 150, & STOPMODE STANDARD, CPU FIRSTOF (1,0), & STARTUPMSG "ALL;SUBNET $ztc0;PORT 7171;CONFIG $SYSTEM.SSHTEST.SSHBCFG" START PROCESS $ZZKRN.#SSH-ZSSHB 說明: ‧啟動SSH2 process,並指定DEFAULTVOL目錄 ‧指定要走那個TCPIP PROCESS:SUBNET $ztc0 ‧指定要走那個PORT:PORT 7171 ‧指定要讀那個CONFIG FILE:CONFIG $SYSTEM.SSHTEST.SSHBCFG, CONFIG FILE內要指定該SSH2要與那個STN PROCESS做連結,如下面紅色字串-PTYSERVER $PTYB SSH CONFIG FILE 內容如下: CUSTOMER HP AUTOADDSYSTEMUSERS TRUE STRICTHOSTKEYCHECKING FALSE CLIENTMODEOWNERPOLICY GUARDIANNAME PTYSERVER $PTYB SSHCTL SSHBDB SSHCTLAUDIT FALSE BACKUPCPU 0 BANNER HOSTKEY HOSTKEYB #--------------------------------------- # log configuration #--------------------------------------- # SET THE LEVEL LOGLEVEL 50 # Do not log to hometerm and EMS LOGCONSOLE * LOGEMS * # Log to log file LOGFILE $SYSTEM.SSHTEST.SSHBLOG #--------------------------------------- # audit configuration #--------------------------------------- # Turn on basic auditing AUDITFILE $SYSTEM.SSHTEST.AUDITB
  • 設定user 採用SSH的連線方式,若要連線要有BLOCK MODE畫面,就必須啟動STN PTY server,它和傳統TELNET連線方式較大不同的地方在於透過SSH連線到系統時,SSH會先有USER的檢驗,所以會有USER的DATABASE,裡面對針對每個登入的USER做限制,該user name為連線時ssh的登入使用者,它可以是系統的user,或是自訂的user name。如登入的使用者採用系統的user,則可以不用先建立user,若是自訂的user,則需先建立,以下為加一個user的範例。 open $zsshB DELETE USER SUPERID ADD USER SUPERID, SYSTEM-USER SUPER.SUPER, & ALLOWED-AUTHENTICATIONS (keyboard-interactive, password, publickey), & ALLOW-SHELL YES, ALLOWED-SUBSYSTEMS (sftp, tacl), ALLOW-TCP-FORWARDING YES, & CI-PROGRAM *MENU* 說明: 此範例為加一個SSH USER叫SUPERID,它登入後權限等同SUPER.SUPER,允許的驗證方式有4種(通常都用PASSWORD),該USER有權限使用SFTP和TACL,且能看到SERVER NAME(CI-PROGRAM *MENU*)。
四、SSH 設定與啟動 SSH2的啟動一定要用SUPER.SUPER才能啟動。以下介紹如何設定與啟動SSH。
  • 設定SSH2 SSH有下列三種方式可以設定所需要的參數- Configuration file、PARAM commands、Startup command line parameters。
    • Configuration file 編輯一個Configuration file,將所需的參數放到檔案內,它的寫法為

      《圖三》
      Parameter-name parameter-value。下面為範例: 在啟動SSH2之前,將所需要的參數先宣告,宣告方式如下: PARAM 假如parameter value 有包含一個或多個逗號,則parameter value要加雙引號””: PARAM "" 下面為範例: PARAM PORT 22 PARAM SUBNET $ZTC03 RUN SSH2/ NAME $SSH02 / SERVER
    • Startup command line parameters 在執行SSH2時,將參數一起加在同一個命令列中,參數中間用分號區隔,方式如下: ; ; ... 下面為範例: PARAM CONFIG SSHCONF RUN SSH2 /NAME $SSH00, CPU 0, NOWAIT/ SERVER; SUBNET $ZTC0; PORT 22 RUN SSH2 /NAME $SSH01, CPU 1, NOWAIT/ SERVER; SUBNET $ZTC1; PORT 22 RUN SSH2 /NAME $SSH02, CPU 2, NOWAIT/ SERVER; SUBNET $ZTC2; PORT 22 RUN SSH2 /NAME $SSH03, CPU 3, NOWAIT/ SERVER; SUBNET $ZTC3; PORT 22
  • 啟動SSH2 SSH2必須由SUPER.SUPER才能啟動,啟動方式有兩種,一種直接從TACL指令啟動,一種設成Generic process(請參考快速啟動SSH2)。從TACL指令啟動方式如下: RUN SSH2 / runoptions / mode [ ; paramname paramvalue; ... ] runoptions:是標準的Guardian RUN選項,如IN、CPU、TERM Mode:是設定SSH啟動的模式,以下為MODE的模式:

    《圖四》
    paramname paramvalue:為SSH2的參數設定
參考資料 HPE NonStop SSH Reference Manual